home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 399_01 / mined.doc < prev    next >
Text File  |  1993-08-03  |  23KB  |  431 lines

  1. +=====================================================================+
  2. |        Documentation file of the Mined editor.               |
  3. +=====================================================================+
  4.  
  5.  Author: Michiel Huisjes.
  6.  
  7.  Modified by Achim Mⁿller to run on a Unix machine with VT100-like
  8.  terminals attached and to recognize function key character sequences.
  9.  
  10.  Modifications and corrections made by Thomas Wolff:
  11.     Basic capabilities:
  12.     Runs with arbitrary terminals on UNIX (using termcap).
  13.     Responds correctly to changes of window size, including
  14.         redisplay of status line; keeps position in text.
  15.     Accepts and displays an 8 bit character set.
  16.     User interface:
  17.     Two letter ESCAPE commands are used for less frequent functions.
  18.     The concept of a HOP key prefix was introduced which fortifies
  19.         any positioning function that follows. This provides more
  20.         command flexibility without too much need of key remembering.
  21.     Command key layout changed to resemble WordMaster/WordStar.
  22.     Improved behaviour:
  23.     Stripping off lines too long for the screen implemented
  24.         also on status line output. If status line input overflows
  25.         the screen and wraps/scrolls, the screen is redisplayed.
  26.     Search displays a "wrap around end of file" message for
  27.         better orientation.
  28.     In case of system errors, the appropriate error message
  29.         is fetched and displayed instead of printing
  30.         numerical hieroglyphs or indistinguished
  31.         commonplace messages (as many UNIX commands do).
  32.     Additional features and commands:
  33.     A HELP command.
  34.     A SUSPEND command with automatic file saving.
  35.     A repeat search command.
  36.     A replace command with confirmation dialogue.
  37.     A change working directory command.
  38.     A change file name reference command.
  39.     Reading from standard input and writing to standard output.
  40.     Starting up at a given line number.
  41.     Appending versions of the buffer cut/copy/write commands.
  42.     Process-independent version of the paste command, thus enabling
  43.         inter-window paste operations.
  44.     A view only version of the edit command (not yet very well developed).
  45.     Commands to print buffer / to perform command with buffer as input.
  46.     Positioning to a percentage within the text.
  47.     Accepts control char sequence for absolute positioning (by mouse)
  48.     Multi-file edit
  49.     External interrupt handling with attempts to save the text
  50.     Configurable indicators for line shift left/right, line end, tab.
  51.     Improved text security:
  52.     Doesn't quit if a file save fails or even if the question for
  53.         a filename isn't answered. So you have a chance
  54.         to try another filename or something.
  55.     Asks whether to overwrite file whenever a file is to be
  56.         written to which was not previously read in.
  57.     Removed abort_mined since no one wants to kill an editor
  58.         unconditionally without attempt to save the text.
  59.     Corrections:
  60.     Some screen positioning errors and inconsistencies
  61.         have been eliminated, for example:
  62.     The EF function now really positions to the end of the text, not
  63.         to the beginning of the last line,
  64.     The HIGH and LOW functions now stay in the current screen column,
  65.         as UP and DN do now more consistently.
  66.     Input routine detects overflow of input buffer.
  67.     Doesn't crash if a file loaded or inserted contains NULL chars.
  68.     Scratch file counting and deleting was corrected.
  69.     The Readonly flag and status message is now based on the really
  70.         effective circumstances (could show wrong state before if
  71.         real and effective user id were different).
  72.     Several minor modifications, e.g.: XBREAK (the screen column limit)
  73.         was increased by 1, since two columns were left blank on
  74.         the right screen border.
  75.     Missing modification:
  76.         The rightmost screen column is currently unused because
  77.         linefeed is used as a line positioner. If absolute
  78.         positioning would be added for each text line output,
  79.         the screen column limit XBREAK could again be increased by 1.
  80.  
  81.     Many further improvements, including special MSDOS adaptations, not 
  82.     further described here. See the help file for information about 
  83.     mined's features.
  84.  
  85.  1. General remarks.
  86.  
  87.     Mined is a screen editor designed for the minix operating system.
  88.     It is meant to be used on files not larger than 50K and to be fast.
  89.     When mined starts up, it reads the file into its memory to minimize
  90.     disk access. The only time that disk access is needed is when certain
  91.     save, write or copy commands are given.
  92.  
  93.     Mined has the style of Emacs or Jove, that means that there are no modes.
  94.     Each character has its own entry in an 256 pointer to function array,
  95.     which is called when that character is typed. Only ASCII characters are
  96.     connected with a function that inserts that character at the current
  97.     location in the file. Two exceptions are <linefeed> and <tab> which are
  98.     inserted as well. Note that the mapping between commands and functions
  99.     called is implicit in the table. Changing the mapping just implies
  100.     changing the pointers in this table.
  101.  
  102.     The display consists of SCREENMAX + 1 lines and XMAX + 1 characters. When
  103.     a line is larger (or gets larger during editing) than XBREAK characters,
  104.     the line is either shifted SHIFT_SIZE characters to the left (which means
  105.     that the first SHIFT_SIZE characters are not printed) or the end of the
  106.     line is marked with the SHIFT_MARK character and the rest of the line is
  107.     not printed.  A line can never exceed MAX_CHARS characters. Mined will
  108.     always try to keep the cursor on the same line and same (relative)
  109.     x-coordinate if nothing changed. So if you scroll one line up, the cursor
  110.     stays on the same line, or when you move one line down, the cursor will
  111.     move to the same place on the line as it was on the previous.
  112.     Every character on the line is available for editing including the
  113.     linefeed at the the of the line. When the linefeed is deleted, the current
  114.     line and the next line are joined. The last character of the file (which
  115.     is always a linefeed) can never be deleted.
  116.     The bottomline (as indicated by YMAX + 1) is used as a status line during
  117.     editing. This line is usually blank or contains information mined needs
  118.     during editing. This information (or rather questions) is displayed in
  119.     reverse video.
  120.  
  121.     The terminal modes are changed completely. All signals like start/stop,
  122.     interrupt etc. are unset. The only signal that remains is the quit signal.
  123.     The quit signal (^\) is the general abort signal for mined. Typing a ^\
  124.     during searching or when mined is asking for filenames, etc. will abort
  125.     the function and mined will return to the main loop.
  126.     Sending a quit signal during the main loop will abort the session
  127.     (after confirmation) and the file is not (!) saved. *removed*
  128.     The session will also be aborted when an unrecoverable error occurs, e.g.
  129.     when there is no more memory available. If the file has been modified,
  130.     mined will ask if the file has to be saved or not.
  131.     If there is no more space left on the disk, mined will just give an error
  132.     message and continue.
  133.  
  134.     The number of system calls are minimized. This is done to keep the editor
  135.     as fast as possible. I/O is done in SCREEN_SIZE reads/writes. Accumulated
  136.     output is also flushed at the end of each character typed.
  137.  
  138.  2. Regular expressions
  139.  
  140.     Mined has a built in regular expression matcher, which is used for
  141.     searching and replace routines. A regular expression consists of a
  142.     sequence of:
  143.  
  144.     1. A normal character matching that character.
  145.     2. A . matching any character.
  146.     3. A ^ matching the begin of a line.
  147.     4. A $ (as last character of the pattern) mathing the end of a line.
  148.     5. A \<character> matching <character>.
  149.     6. A number of characters enclosed in [] pairs matching any of these
  150.        characters. A list of characters can be indicated by a '-'. So
  151.        [a-z] matches any letter of the alphabet. If the first character
  152.        after the '[' is a '^' then the set is negated (matching none of
  153.        the characters).
  154.        A ']', '^' or '-' can be escaped by putting a '\' in front of it.
  155.        Of course this means that a \ must be represented by \\.
  156.     7. If one of the expressions as described in 1-6 is followed by a
  157.        '*' than that expressions matches a sequence of